package com.zwh.word.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;

import com.fasterxml.jackson.annotation.JsonFormat;


import com.zwh.word.enums.ContractStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 分包合同计划对象 tb_contract_plan
 *
 * @author zhangwenhe
 * @date 2024-03-15
 */
@Data
public class TbContractPlanVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 项目id */
    @ApiModelProperty("项目id")
    private Long projectId;
    @ApiModelProperty("项目名称")
    private String projectName;
    @ApiModelProperty("项目编号")
    private String proCode;

    /** 总包合同id */
    @ApiModelProperty("总包合同id")
    private Long contractId;
    /** 合同编号 */
    @ApiModelProperty("总包合同编号")
    private String contractNo;
    /** 合同金额(万元) */
    @ApiModelProperty("总包合同金额(万元)")
    private BigDecimal contractAmount;

    /** 总包企业名称 */
    @ApiModelProperty("总包企业名称")
    private String businessName;

    /** 分包计划编号 */
    @ApiModelProperty("分包计划编号")
    private String planNo;

    /** 监理项目部 */
    @ApiModelProperty("监理项目部")
    private String supervisionDepartment;

    /** 计划累计金额(万元) */
    @ApiModelProperty("计划累计金额(万元)")
    private BigDecimal planAccruingAmount;

    /** 计划累计比例% */
    @ApiModelProperty("计划累计比例%")
    private BigDecimal planAccruingRate;

    /** 本次计划累计金额(万元) */
    @ApiModelProperty("本次计划累计金额(万元)")
    private BigDecimal planAmount;

    /** 提交时间 */
    @ApiModelProperty("提交时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date submitTime;

    /** 计划状态（0-待提交、1-待审批、2-已归档、3-已退回）{@link ContractStatusEnum} */
    @ApiModelProperty("计划状态")
    private String planStatus;

    /** 文件名 */
    @ApiModelProperty("文件名")
    private String fileName;

    /** 文件路径 */
    @ApiModelProperty("文件路径")
    private String filePath;

    /**
     * 分包项列表
     */
    @Valid
    @NotEmpty(message = "分包计划项列表不能为空")
    @ApiModelProperty("分包计划项列表")
    private List<TbContractPlanItemDto> items;

    /** 0未删除，1已删除 */
    private Integer isDelete;
    /** 创建者 */
    private String createBy;
    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /** 更新者 */
    private String updateBy;
    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /** 创建者所属公司id */
    private Long createBusinessId;
}
